#include<bits/stdc++.h>
using namespace std;
long long read()
{
    long long x=0;
    short f=1;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-')
        {
            f*=(-1);
        }
        c=getchar();
    }
    while(c>='0'&&c<='9')
    {
        x=x*10+c-'0';
        c=getchar();
    }
    return x*f;
}
void wit(long long x)
{
    if(x==0)
    {
        return ;
    }
    wit(x/10);
    putchar(x%10+'0');
    return ;
}
void write(long long x,bool edl)
{
    if(x<=0)
    {
        if(x==0)
        {
            putchar('0');
        }else{
            putchar('-');
            wit(x*(-1));
        }
    }else{
        wit(x);
    }
    if(edl)
    {
        putchar('\n');
    }else{
        putchar(' ');
    }
    return ;
}
void test(bool ext)
{
    puts("TEST");
    if(ext)
    {
        exit(0);
    }
    return ;
}
const int N=2e5+5;
int n,a[N];
long long dp[2][N][2]={0};
int main()
{
    freopen("color.in","r",stdin);
    freopen("color.out","w",stdout);
    int t,s1,s2;
    long long ans;
    t=read();
    for(int t1=1;t1<=t;t1++)
    {
        n=read();
        if(n<=2000)
        {
            for(int i=1;i<=n;i++)
            {
                a[i]=read();
            }
            s1=0;
            s2=1;
            dp[0][1][0]=0;
            dp[0][1][1]=0;
            for(int i=1;i<=n;i++)
            {
                if(a[i]==a[i-1])
                {
                    for(int j=0;j<i-1;j++)
                    {
                        dp[s2][j][0]=dp[s1][j][0]+a[i];
                        dp[s2][j][1]=dp[s1][j][1]+a[i];
                    }
                }else{
                    for(int j=0;j<i-1;j++)
                    {
                        dp[s2][j][0]=dp[s1][j][0];
                        dp[s2][j][1]=dp[s1][j][1];
                    }
                }
                dp[s2][i-1][0]=0;
                dp[s2][i-1][1]=0;
                for(int j=0;j<i-1;j++)
                {
                    dp[s2][i-1][0]=max(dp[s2][i-1][0],dp[s1][j][1]+a[i]*(a[i]==a[j]));
                    dp[s2][i-1][1]=max(dp[s2][i-1][1],dp[s1][j][0]+a[i]*(a[i]==a[j]));
                }
                s1 =s1 ^ 1;
                s2 =s2 ^ 1;
            }
            ans=0;
            for(int i=1;i<n;i++)
            {
                ans=max(dp[s1][i][0],ans);
                ans=max(dp[s1][i][1],ans);
            }
            write(ans,true);
        }else{
            for(int i=1;i<=n;i++)
            {
                a[i]=read();
            }
            s1=0;
            s2=1;
            dp[0][1][0]=0;
            dp[0][1][1]=0;
            for(int i=1;i<=n;i++)
            {
                if(a[i]==a[i-1])
                {
                    for(int j=max(0,i-1-100);j<i-1;j++)
                    {
                        dp[s2][j][0]=dp[s1][j][0]+a[i];
                        dp[s2][j][1]=dp[s1][j][1]+a[i];
                    }
                }else{
                    for(int j=max(0,i-1-100);j<i-1;j++)
                    {
                        dp[s2][j][0]=dp[s1][j][0];
                        dp[s2][j][1]=dp[s1][j][1];
                    }
                }
                dp[s2][i-1][0]=0;
                dp[s2][i-1][1]=0;
                for(int j=max(0,i-1-100);j<i-1;j++)
                {
                    dp[s2][i-1][0]=max(dp[s2][i-1][0],dp[s1][j][1]+a[i]*(a[i]==a[j]));
                    dp[s2][i-1][1]=max(dp[s2][i-1][1],dp[s1][j][0]+a[i]*(a[i]==a[j]));
                }
                s1 =s1 ^ 1;
                s2 =s2 ^ 1;
            }
            ans=0;
            for(int i=1;i<n;i++)
            {
                ans=max(dp[s1][i][0],ans);
                ans=max(dp[s1][i][1],ans);
            }
            write(ans,true);
        }
    }
    return 0;
}
